#pragma once
#include <list>
#include <iostream>
using namespace std;

template<class T>
class Queue
{
public:
	void push(const T& val)
	{
		_c.push_back(val);
	}

	void pop() 
	{
		_c.pop_front();
	}

	bool empty() const
	{
		return _c.empty();
	}

	size_t size() const
	{
		return _c.size();
	}

	T& front()
	{
		return _c.front();
	}

	T& back()
	{
		return _c.back();
	}

private:
	list<T> _c;
};